//
//  HMTabBar.swift
//  HMWeiBo
//
//  Created by Apple on 16/7/28.
//  Copyright © 2016年 itheima. All rights reserved.
//

import UIKit

class HMTabBar: UITabBar {

    // 声明一个闭包变量
    var closure: (()->())?
    
    override init(frame: CGRect) {
        
        super.init(frame: frame)
        
        // 添加子控件
        setupUI()
    }
    
    // 系统为什么会提示我们这个?
    // storyboard的初始化方法是 init(coder)
    // 如果你从storyboard加载的话,系统会提醒你,把添加子控件的方法,要写在这里
    required init?(coder aDecoder: NSCoder) {
        
        // 这个东西只是作为一个提醒
        fatalError("init(coder:) has not been implemented")
    }
    
    // 添加子控件
    private func setupUI(){
        
        addSubview(compose2Button)
    }
    func demo(){}
    
   // 重写 layoutsubView
    override func layoutSubviews() {
        
        //调用父类
        super.layoutSubviews()
        
//        print(subviews)
        
        /*
            UITabBarButton 是系统私有的
        */
        
        // 修改子空间的宽和位置
        
        let width = bounds.width / 5
        let height = bounds.height
        
        // 定义一个索引
        var index = 0
        
        // 遍历
        for subview in subviews {
            
            // 判断一下他的类型
            if subview.isKindOfClass(NSClassFromString("UITabBarButton")!) {
                // 可选项的问题 : 最聪明的做法,让xcode自动提示,然后我们再分析
                // NSClassFromString("UITabBarButton")! -- 程序员需要确保这个字符串能够转换成有的类
//                printLog("这个就是 item")
                
                subview.frame = CGRectMake(CGFloat(index) * width, bounds.origin.y, width, height)
                
                // 修改索引的值
                index++
                
                // 判断一下索引,然后空出中间的位置
                if index == 2 {index++}
            }
            
        }
        
        // 设置中间加号按钮的位置
        compose2Button.frame = CGRectMake(2 * width, bounds.origin.y, width, height)
    }

    // MARK:-- 按钮的点击方法
    func click(){
        
//        print("点击了")
        
        // 点击会model 一个控制器
        
        closure?()
        
    }
    
    // MARK:-- 懒加载控件
    
    lazy var composeButton: UIButton = UIButton()
    
    lazy var compose2Button: UIButton = {
    
        let button = UIButton()
        
        // 设置属性
        button.setImage(UIImage(named: "tabbar_compose_icon_add"), forState: UIControlState.Normal)
        button.setImage(UIImage(named: "tabbar_compose_icon_add_highlighted"), forState: UIControlState.Highlighted)
        
        button.setBackgroundImage(UIImage(named: "tabbar_compose_button"), forState: UIControlState.Normal)
        button.setBackgroundImage(UIImage(named: "tabbar_compose_button_highlighted"), forState: UIControlState.Highlighted)
        
        // 添加点击事件
        button.addTarget(self, action: "click", forControlEvents: UIControlEvents.TouchUpInside)
        
        return button
    }()
    
}
